package com.xjl.shujujiegou;

import java.util.Stack;

/**
 * @描述： 实现一个特殊的栈，除了能实现栈的基本功能的基础上，再返回栈中最小元素的操作 要求时间复杂度为O(1)
 * @作者： 许JIAN林
 */
public class SpecialStack {
    private Stack<Integer> data;
    private Stack<Integer> min;

    public SpecialStack(){
        data = new Stack<Integer>();
        min = new Stack<Integer>();
    }
    public void push(int num) {
        data.push(num);
        if (min.isEmpty()) {
            min.push(num);
        } else {
            if (min.peek() > num) {
                min.push(num);
            } else {
                min.push(min.peek());
            }
        }
    }

    public Integer pop() {
        min.pop();
        return  data.pop();
    }
    public Integer peek() {
        return data.peek();
    }


    public Integer getMin(){

        return min.peek();
    }
}
